package com.yuyu.demo.demo_springboot.utils;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
 * 获取请求的Json值
 *
 * @author yuyu <yu.yu@chinaott.net>
 * @date 2017-12-23
 */

public class MakeJsonUtils {

    /***
     * 获取request中json字符串的内容
     */
    public static String getRequestJsonString(HttpServletRequest request) throws IOException {
        String method = request.getMethod();
        if (method.equals("GET")) {
            return new String(request.getQueryString().getBytes("iso-8859-1"), "utf-8").replaceAll("%22", "\"");
        } else {
            return getRequestPostStr(request);
        }
    }

    /**
     * 获取post请求内容
     */
    public static String getRequestPostStr(HttpServletRequest request) throws IOException {
        byte buffer[] = getRequestPostBytes(request);
        String charEncoding = request.getCharacterEncoding();
        if (charEncoding == null) {
            charEncoding = "UTF-8";
        }
        return new String(buffer, charEncoding);
    }

    /**
     * 获取post请求的 byte[]数组
     */
    public static byte[] getRequestPostBytes(HttpServletRequest request) throws IOException {
        int contentLength = request.getContentLength();
        if (contentLength < 0) {
            return null;
        }
        byte buffer[] = new byte[contentLength];
        for (int i = 0; i < contentLength; ) {
            int readlen = request.getInputStream().read(buffer, i, contentLength - i);
            if (readlen == -1) {
                break;
            }
            i += readlen;
        }

        //TODO 重新写回request中，否则Controller无法使用实体映射
        return buffer;
    }

}
